<!DOCTYPE html>
<html ng-app="App" lang="en">
<head>
    <meta charset="UTF-8">
    <title>angular</title>
</head>
<body>
<p>
    核心概念与基本用法
    1.MVC:作为DataModel的$Scope
       1.$scope充当MVC的Data-Model角色
       2.是一个POJO(Plain Old JavaScript Obiect)
       3.提供了一些工具方法$watch()/$apply()
       4.表达式的执行环境（或者叫作用域）
       5.是一个树形结构，与DOM标签平行
       6.子$scope对象会继承父$scope上属性
       7.每一个Angular应用只有一个根$scope对象（一般位于ng-app上）
       8.$scope可以传播事件，类试DOM事件，可以向上也可以向下

    2.依赖注入DI
       1.Angular 会使用$injector 自动注入$scope对象
    3.模块化Module
       1.模块是Service.Directive.Filter.配置信息的配置
       2.使用angular.module(...)来创建或者获取模块
       3.模块之间可以互相依赖
       4.切分成小模块便于进行单元测试和集成测试
    4.Service
       1.Service是一些单例的对象或者function,来用来完成一些通用的功能
       2.Angular内置了很多Service
       3.内置的Service,只要声明即可，angualr会帮你自动注入，angualr使用构造器注入的方式
    5.Filter
    6.Two way DataBinding
    7.Directive
       1.使用Angular来封装UI控件可以让代码得到大幅度简化
    8.Unit Testing&E2E Testing
</p>
<p>
    HTML Parser&Directives

    1.Parser的本质：JS 的编译器
    compile——遍历DOM,找到所有指令。——指令优先级排序；执行compile函数；把每一个compile函数返回的link函数打包到一个总的link函数中——link——将scope绑定到DOM上；
    在元素上注册事件监听器；使用$watch监控数据模型
       1.parse HTML into DOM element                    var template=angualr.element(html);
       2.compile the template                           var linkFn=$compile(template);
       3.link the compiled template with the scope      linkFn(scope);

    指令嵌套 指令处理HTML元素 指令之间的交互 这是Angular封装UI组件基础


    Two way Data-Binding
       1.angualr实现了双向数据绑定 view model
       2.双向绑定的核心是“脏值检测” 难点是“振荡问题”或者“循环依赖问题”

    注意：1.监控的表达式不要过于复杂，表达式数量不要太多
         2.监听函数内不要有Dom操作，那样会显著降低性能
         3.不能互相监听对方会修改的属性，以免形成交叉引用
         4.ng默认的TTL是10次
         5.深拷贝式的脏值检测会消耗更多内
    （核心都是尽量减少digest的次数）

    Dependule&Controller&Service
    Module&Controller&Service
</p>
<p>
    1.angualr相比JQuery区别？
    jquery核心是Dom Query
    angular ng核心是一些设计和架构思想。ng内置了一个轻量级的jquery实现 叫做jquerylite, ng会自动识别是否导入jQuery包

    2.与backbone相比angular有什么优势？
    ng在设计上比BacjBone 更复杂，概念更多，backbone没有依赖注入双向数据绑定等级制。

    3.angualr有UI控件？
    ng的核心目的不是做UI,而是做代码分层和前端代码分层和前段框架设计

</p>
</body>
</html>





